# # 六、定义一个桌子类（Desk），包含长（length）、宽（width）、高（height）属性，
# # 包含一个打印桌子信息属性的方法（showInfo）。实例化2个桌子对象，为其赋予不同的属性值，
# # 并调用showInfo方法，输出每个桌子的信息。
# # class Desk:
# #     def __init__(self,length,width,height):
# #         self.Length= length
# #         self.width= width
# #         self.height = height
# #
# #
# # if __name__ == '__main__':
# #     desk1=Desk(22,33,44)
# #     desk2=Desk(11,22,33)
# #     print(desk1.width)
#
#
#
#
# # 七、定义一个用户类(User),用户名(username)和密码(password)是这个类的属性。
# # class User:
# #     def __init__(self,username,password):
# #         self.username=username
# #         self.password = password
# # if __name__ == '__main__':
# #     user1=User(username="admin",password="123456")
# #     user2=User(username="qqqqq",password="123")
# #     print(user1.username)
#
# # 九、创建一个名为Person的类，具有以下属性和方法：
# # 属性：name（姓名），age（年龄）
# # 方法：greet()，打印出一句问候语，包括该人的姓名和年龄
# # class Person:
# #     def __init__(self,name,age):
# #         self.name=name
# #         self.age=age
# #     def greet(self):
# #         print(f"hello,我是%s,今年%s,"%(self.name,self.age))
# # if __name__ == '__main__':
# #     f1=Person("张三",14)
# #     print(f1.name)
# #     print(f1.age)
#
#
#
#
# # 十一、创建一个名为"Car"的类，该类具有"品牌"和"颜色"属性。
# # 创建一个"start_engine"方法，该方法打印出"启动汽车引擎！"的消息。
# # 创建一个"stop_engine"方法，该方法打印出"关闭汽车引擎！"的消息
# # class Car:
# #     def __init__(self,branch,color):
# #         self.branch = branch
# #         self.color = color
# #     def start_engine(self):
# #         print("启动汽车引擎！")
# #     def stop_engine(self):
# #         print("关闭汽车引擎！")
# import pymysql
# from faker import Faker
# faker = Faker(locale="zh_cn")
#
#
# db=pymysql.connect(user="root",password="123456",host="121.43.29.41",database="chen",cursorclass=pymysql.cursors.DictCursor)
# cursor=db.cursor()
# cursor.execute("select * from student where name='张三'")
# r =cursor.fetchone()
# print(r)
#
#
# cursor.execute("select * from student where age=22")
# r=cursor.fetchone()
# print(r)
#
#
# # cursor.execute(f'insert into student(name,address) values("{faker.name()}")'
# # db.commit()
# # cursor.execute("select * from student")
# # r=cursor.fetchall()
# # print(r)
#
#
# cursor.execute('update student set name="张三"where name="chen"')
# db.commit()
# cursor.execute('select * from student')
# r=cursor.fetchall()
# print(r)
#
# cursor.execute("delete from student where name='李四'")
# db.commit()
# cursor.execute('select * from student')
# r=cursor.fetchall()
# print(r)
#
#
# cursor.execute(f'insert into student(name,address)values("{faker.name()}","{faker.address()}")')
# db.commit()
# cursor.execute('select * from student')
# r=cursor.fetchall()
# print(r)
#
#
# cursor.execute(f'insert into student(name,address)values("{faker.name()}","{faker.address()}")')
# db.commit()
# cursor.execute('select * from student')
# r=cursor.fetchall()
# print(r)
#
#
# cursor.close()          # 先关闭游标
# db.close()
#
#
#
# 作业：
# 1、通过python连接pymysql数据库，封装类方法
# 1.1、随机插入100条数据到数据库表，包括姓名、年龄、家庭住址、身份证号码
# 1.2、查询全部的数据
# 1.3、删除指定一条数据
# 1.4、封装批量删除方法，可以删除多条
# 1.5、可以指定增加单独一条数据到表里
# 以上每个操作步骤要写日志信息到log.txt里
#
# 2、做一个学生点名系统，系统里支持：存入学生、更改学生、删除学生、点到学生姓名方法
#
# 存入学生（姓名、年龄、家庭地址、手机号）： 存入成功后，提示xxx存入成功
# 更改学生（姓名、年龄、家庭地址、手机号）：可以修改学生内容的任意一个字段
# 删除学生：删除的学生将不在展示
# 展示全部学生：可以看到全部的学生姓名
# 学生姓名：随机抽取任意一个存在的学生信息，然后打印：到！。举例： 刘闯到！
#
# 以上内容，需要连接数据库，每次的数据都需要增、删、改、查去做
# import pymysql
#
#
# class DB:
#     faker = Faker(locale='zh_cn')
#     def connect(self):
#         self.db=pymysql.connect(user='root',password='123456',database='chen',host='121.43.29.41',cursorclass=pymysql.cursors.DictCursor)
#         self.cursor = self.db.cursor()
#
#         def close(self):
#             self.cursor.close()
#             self.db.close()








#
# # 3、类作业，统计镰刀和斧头的数量，要使用类方法
# futou=0
# liandao=0
# class Tools:



#
# 4、新建学生成绩管理系统，随机生成100个 学生信息插入到数据库：
# 学生信息组成：学号、学生姓名、英语成绩、数学成绩、语文成绩、班级号（班级号有：1809A，1809B，1810A，1810B）
#
# 成绩划分为：优秀，良好，中等，及格，不及格。良好比中等好。
#
# 优秀：90—100之间（包括90）
# 良好：80-89
# 中等：70-79
# 及格：60-69
# 不合格：分数低于60分。
#
# 成绩管理系统提供以下方法：
# 《1》 查询所有英语成绩为优秀的、良好的、中等、及格和不合格的学生姓名和班级号
# 《2》 查询1809A，1809B，1810A，1810B每个班级的数学成绩，并且是降序返回
# 《3》 查询1809A，1809B，1810A，1810B每个班级的总人数，并且由大到小排序返回
# 《4》 查询英语、数学、语文成绩不合格的学生姓名和对应的班级号，按照不合格的人数，由大到小排序
#
# 5、定义一个图书管理系统类，图书可以新增、修改、删除，要求新增、修改、删除的图书，都要出现在数据库中
# 新增：图书名、作者名称、新建年月日
# 修改：图书名、作者名称、新建年月日
# 删除：图书删掉，且不在展示
# # 查看：全量查询、精确查询、模糊查询需要用户传入形参来控制返回结果
